最近在使用 QGLWidget 时发现,虽然 QGLWidget 继承于 QWidget 类,但默认情况下如果使用 QGLWidget 类代替 QWidget 类而且重写了 keyPressEvent 后,虽然编译运行都没有问题可总是接收不到事件。在查阅了文档后发现问题出现在 Widget 获得焦点这里,默认情况下 QGLWidget 的焦点策略为“不获得焦点”,自然不会接收到按键事件,要使它能得到焦点,需要设置focusPolicy。
Qt中的焦点策略
要使Windget能够得到焦点,则将focusPolicy设置为除Qt::NoFocus之外的任意值: